home *** CD-ROM | disk | FTP | other *** search
File List | 1996-09-18 | 12.4 KB | 479 lines |
- @fselect_init
- DO
- @fselect
- EXIT IF fs_file$=""
- ALERT 0,"Rückgabe:|'"+fs_drive$+"'|'"+fs_pfad$+"'|'"+fs_file$+"'",1,"WEITER",d%
- LOOP
- END
- '
- PROCEDURE fselect_init
- LOCAL i%
- fs_coms%=11
- DIM fs_commando$(fs_coms%+1),fs_com$(fs_coms%+1)
- fs_in_dat:
- DATA LaufW:,Pfad:,Maske:,Ext's:,^-Cursor,v-Cursor,Open,Close,Direkt,Abbruch,RETURN=O.k
- RESTORE fs_in_dat
- fs_in$=SPACE$(fs_coms%)
- FOR i%=1 TO fs_coms%
- READ fs_commando$(i%)
- fs_com$(i%)=LEFT$(fs_commando$(i%),1)
- MID$(fs_in$,i%,1)=UPPER$(fs_com$(i%))
- NEXT i%
- fs_abbruch%=fs_coms%-1
- fs_default%=fs_coms%
- exts%=8
- DIM ext$(exts%+1)
- DATA "* ","ASC","TXT","DOC","GFA","INL","S ","PRG"
- FOR i%=1 TO exts%
- READ ext$(i%)
- NEXT i%
- DIM fs_tail$(fs_coms%+1)
- fs_drive%=GEMDOS(&H19)
- fs_drive$=CHR$(65+fs_drive%)
- fs_drvs%=BIOS(10)
- fs_tail$(1)=""
- FOR i%=0 TO 15
- IF BTST(fs_drvs%,i%) THEN
- IF i%=fs_drive% THEN
- fs_tail$(1)=fs_tail$(1)+inv$+" "+drive$+" "+norm$
- ELSE
- fs_tail$(1)=fs_tail$(1)+" "+CHR$(65+i%)+" "
- ENDIF
- ENDIF
- NEXT i%
- DATA ________.___,* ASC TXT DOC GFA INL PIC PRG,"","","","","","",""
- INLINE pfad_buf%,256
- ~GEMDOS(&H47,L:pfad_buf%,fs_drive%+1)
- fs_pfad$=CHAR{pfad_buf%}
- fs_tail$(2)=pfad$
- FOR i%=3 TO fs_coms%
- READ fs_tail$(i%)
- NEXT i%
- fs_dats%=128
- DIM fs_dat$(fs_dats%+1),fs_dat1$(fs_dats%+1),fs_dat2$(fs_dats%+1)
- fs_dat_anzs%=25
- fs_datein%=0
- fs_xb%=45
- fs_yb%=18
- fs_x%=fs_xb%*8
- fs_y%=fs_yb%*16
- fs_b%=40*8
- fs_h%=40*16
- fs_top%=1
- fs_t%=0
- fs_fk%=1
- IF INT{L~A-46}=8 THEN
- fs_fk%=1
- ELSE ! 16
- fs_fk%=0
- ENDIF
- ABSOLUTE fs_asc|,V:fs_t%+3
- ABSOLUTE fs_scan|,V:fs_t%+1
- ABSOLUTE fs_st|,V:fs_t%
- RETURN ! fselect_init
- '
- PROCEDURE fselect
- LOCAL i%,idx%,c_idx%,d_idx%,hhx%,c_back$,d_back$,mx%,my%,mk%,h$,dc!,dcw$
- '
- GET fs_x%,fs_y%,ADD(fs_x%,fs_b%),ADD(fs_y%,fs_h%),fs_back$
- '
- IF INT{L~A-46}=8 THEN
- fs_fk%=1
- ELSE
- fs_fk%=0
- ENDIF
- '
- @fs_normalisierung
- @fs_dateien
- @fs_neu
- '
- fs_file$=fs_vorschlag$
- '
- d_idx%=0
- hhx%=0
- '
- DEFMOUSE 3
- SHOWM
- REPEAT
- '
- c_idx%=0
- dcw$=""
- '
- REPEAT
- fs_t%=GEMDOS(6,&HFF)
- MOUSE mx%,my%,mk%
- UNTIL fs_t%>0 OR mk%>0
- '
- IF fs_t%>0 THEN
- SELECT fs_scan|
- CASE &H48 ! UP
- DEC idx%
- IF idx%<1 THEN
- c_idx%=INSTR(fs_in$,"^")
- d_idx%=0
- idx%=1
- ELSE
- IF idx%<>d_idx% THEN
- IF d_idx%>0 THEN
- PUT ADD(fs_x%,8),fs_y%+SHL(ADD(fs_coms%,1),4)+SHL(hhx%,4),d_back$
- ENDIF
- d_idx%=idx%+fs_top%-1
- hhx%=idx%
- GET ADD(fs_x%,8),fs_y%+SHL(ADD(fs_coms%,1),4)+SHL(hhx%,4),ADD(fs_x%,112),fs_y%+SHL(ADD(fs_coms%,1),4)+SHL(ADD(hhx%,1),4),d_back$
- PUT ADD(fs_x%,8),fs_y%+SHL(ADD(fs_coms%,1),4)+SHL(hhx%,4),d_back$,10
- IF fs_dat1$(d_idx%)<>"_" THEN
- PRINT AT(fs_xb%+20,SHL(fs_yb%+10,fs_fk%));LEFT$(fs_dat$(d_idx%)+" ",12);
- fs_file$=fs_dat$(d_idx%)
- ENDIF
- ENDIF
- ENDIF
- CASE &H50 ! DOWN
- INC idx%
- IF idx%>fs_dat_anzs%+1 THEN
- c_idx%=INSTR(fs_in$,"V")
- d_idx%=0
- idx%=1
- ELSE
- IF idx%<>d_idx% THEN
- IF d_idx%>0 THEN
- PUT ADD(fs_x%,8),fs_y%+SHL(ADD(fs_coms%,1),4)+SHL(hhx%,4),d_back$
- ENDIF
- d_idx%=idx%+fs_top%-1
- hhx%=idx%
- GET ADD(fs_x%,8),fs_y%+SHL(ADD(fs_coms%,1),4)+SHL(hhx%,4),ADD(fs_x%,112),fs_y%+SHL(ADD(fs_coms%,1),4)+SHL(ADD(hhx%,1),4),d_back$
- PUT ADD(fs_x%,8),fs_y%+SHL(ADD(fs_coms%,1),4)+SHL(hhx%,4),d_back$,10
- IF fs_dat1$(d_idx%)<>"_" THEN
- PRINT AT(fs_xb%+20,SHL(fs_yb%+10,fs_fk%));LEFT$(fs_dat$(d_idx%)+" ",12);
- fs_file$=fs_dat$(d_idx%)
- ENDIF
- ENDIF
- ENDIF
- DEFAULT
- c_idx%=INSTR(fs_in$,UPPER$(CHR$(fs_asc|)))
- IF fs_asc|=&HD THEN
- c_idx%=INSTR(fs_in$,"R")
- ENDIF
- ENDSELECT
- ENDIF
- '
- IF mk%=1 THEN
- PAUSE 10
- i%=TIMER
- mk%=0
- REPEAT
- mk%=MOUSEK
- UNTIL mk%=1 OR TIMER=ADD(i%,10)
- dc!=(mk%=1)
- SUB mx%,fs_x%
- SUB my%,fs_y%
- IF my%>16 AND my%<SHL(ADD(fs_coms%,1),4) THEN
- IF mx%>8 AND mx%<fs_b%*8 THEN
- idx%=my% DIV 16
- IF idx%<>c_idx% THEN
- IF c_idx%>0 THEN
- PUT fs_x%+8,fs_y%+c_idx%*16,c_back$
- ENDIF
- c_idx%=idx%
- GET ADD(fs_x%,8),fs_y%+SHL(c_idx%,4),fs_x%+8+LEN(fs_commando$(c_idx%))*8,fs_y%+SHL(ADD(c_idx%,1),4),c_back$
- PUT ADD(fs_x%,8),fs_y%+SHL(c_idx%,4),c_back$,10
- PRINT AT(fs_xb%+20,SHL(fs_yb%+9,fs_fk%));fs_commando$(c_idx%);" ";
- ENDIF
- ENDIF
- ELSE IF my%>(fs_coms%+2)*16 AND my%<fs_h%-16
- IF mx%>8 AND mx%<fs_b%*8 THEN
- idx%=(my%-SHL(ADD(fs_coms%,1),4)) DIV 16
- IF idx%<>d_idx% THEN
- IF d_idx%>0 THEN
- PUT fs_x%+8,fs_y%+(fs_coms%+1)*16+hhx%*16,d_back$
- ENDIF
- d_idx%=idx%+fs_top%-1
- hhx%=idx%
- GET fs_x%+8,fs_y%+(fs_coms%+1)*16+hhx%*16,fs_x%+112,fs_y%+(fs_coms%+1)*16+hhx%*16+16,d_back$
- PUT fs_x%+8,fs_y%+(fs_coms%+1)*16+hhx%*16,d_back$,10
- IF fs_dat1$(d_idx%)<>"_" THEN
- PRINT AT(fs_xb%+20,SHL(fs_yb%+10,fs_fk%));LEFT$(fs_dat$(d_idx%)+" ",12);
- fs_file$=fs_dat$(d_idx%)
- ENDIF
- ENDIF
- IF dc! THEN
- IF fs_dat1$(d_idx%)="_" THEN
- IF LEFT$(fs_dat$(d_idx%),1)="." THEN
- c_idx%=INSTR(fs_in$,"C")
- ELSE
- c_idx%=INSTR(fs_in$,"O")
- ENDIF
- ELSE
- c_idx%=INSTR(fs_in$,"R")
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ELSE IF mk%=2
- c_idx%=fs_abbruch%
- ENDIF
- '
- SELECT c_idx%
- CASE 1 ! Drive
- PRINT AT(fs_xb%+2+LEN(fs_commando$(1)),SHL(fs_yb%+2,fs_fk%));cur_on$;
- IF NOT dc! THEN
- PAUSE 10
- REPEAT
- fs_t%=GEMDOS(6,&HFF)
- MOUSE mx%,my%,mk%
- UNTIL fs_t%>0 OR mk%>0
- IF fs_t%>0 THEN
- fs_drive$=UPPER$(CHR$(fs_asc|))
- fs_drive%=ASC(fs_drive$)-65
- ELSE
- SUB mx%,ADD(fs_x%,56)
- DIV mx%,24
- fs_drive%=mx%
- fs_drive$=CHR$(65+mx%)
- PUT fs_x%+8,fs_y%+c_idx%*16,c_back$
- ENDIF
- ELSE
- SUB mx%,56
- DIV mx%,24
- fs_drive%=mx%
- fs_drive$=CHR$(65+mx%)
- PUT fs_x%+8,fs_y%+c_idx%*16,c_back$
- ENDIF
- PRINT cur_off$;
- IF INSTR(fs_tail$(1),fs_drive$) THEN
- ~GEMDOS(&HE,fs_drive%)
- @fs_normalisierung
- @fs_dateien
- @fs_neu
- ENDIF
- CASE 2 ! Pfad
- PRINT AT(fs_xb%+2+LEN(fs_commando$(2)),SHL(fs_yb%+1+2,fs_fk%));
- FORM INPUT 32 AS fs_pfad$
- h$=fs_pfad$+CHR$(0)
- ~GEMDOS(&H3B,L:VARPTR(h$))
- @fs_normalisierung
- @fs_dateien
- @fs_neu
- CASE 3 ! Maske
- PRINT AT(fs_xb%+2+LEN(fs_commando$(3)),SHL(fs_yb%+1+3,fs_fk%));
- IF dc! THEN
- SUB mx%,24
- DIV mx%,32
- ALERT 1,"nr:"+STR$(mx%),1,"R",d%
- PUT fs_x%+8,fs_y%+c_idx%*16,c_back$
- ELSE
- FORM INPUT 12 AS mask$
- ENDIF
- @fs_normalisierung
- @fs_dateien
- @fs_neu
- CASE 4 ! E_XTs
- PRINT AT(fs_xb%+2+LEN(fs_commando$(4)),SHL(fs_yb%+1+4,fs_fk%));cur_on$;
- PAUSE 10
- IF NOT dc! THEN
- i%=0
- PRINT AT(fs_xb%+2+LEN(fs_commando$(4))+i%*4,SHL(fs_yb%+1+4,fs_fk%));inv$;MID$(fs_tail$(4),i%*4+1,3);norm$;
- REPEAT
- REPEAT
- fs_t%=GEMDOS(6,&HFF)
- MOUSE mx%,my%,mk%
- UNTIL fs_t%>0 OR mk%>0
- IF fs_t%>0 THEN
- IF fs_scan|=&H4B THEN ! <-
- PRINT AT(fs_xb%+2+LEN(fs_commando$(4))+i%*4,SHL(fs_yb%+1+4,fs_fk%));MID$(fs_tail$(4),i%*4+1,3);
- DEC i%
- i%=MAX(0,i%)
- PRINT AT(fs_xb%+2+LEN(fs_commando$(4))+i%*4,SHL(fs_yb%+1+4,fs_fk%));inv$;MID$(fs_tail$(4),i%*4+1,3);norm$;
- ENDIF
- IF fs_scan|=&H4D THEN ! ->
- PRINT AT(fs_xb%+2+LEN(fs_commando$(4))+i%*4,SHL(fs_yb%+1+4,fs_fk%));MID$(fs_tail$(4),i%*4+1,3);
- INC i%
- i%=MIN(7,i%)
- PRINT AT(fs_xb%+2+LEN(fs_commando$(4))+i%*4,SHL(fs_yb%+1+4,fs_fk%));inv$;MID$(fs_tail$(4),i%*4+1,3);norm$;
- ENDIF
- ELSE
- SUB mx%,ADD(fs_x%,56)
- DIV mx%,32
- mask$="*."+MID$(fs_tail$(4),mx%*4+1,3)
- PUT fs_x%+8,fs_y%+c_idx%*16,c_back$
- ENDIF
- UNTIL fs_asc|=&HD OR mk%>0
- IF fs_asc|=&HD THEN
- mask$="*."+MID$(fs_tail$(4),i%*4+1,3)
- ENDIF
- PRINT AT(fs_xb%+2+LEN(fs_commando$(4))+i%*4,SHL(fs_yb%+1+4,fs_fk%));MID$(fs_tail$(4),i%*4+1,3);cur_off$;
- ELSE
- SUB mx%,56
- DIV mx%,32
- mask$="*."+MID$(fs_tail$(4),mx%*4+1,3)
- PRINT cur_off$;
- ENDIF
- @fs_normalisierung
- @fs_dateien
- @fs_neu
- CASE 5 ! U_P ^
- SUB fs_top%,fs_dat_anzs%
- fs_top%=MAX(1,fs_top%)
- @fs_neu
- CASE 6 ! D_OWN v
- ADD fs_top%,fs_dat_anzs%
- fs_top%=MIN(fs_top%,fs_datein%-fs_dat_anzs%)
- fs_top%=MAX(fs_top%,1)
- @fs_neu
- CASE 7 ! O_PEN
- IF fs_dat1$(d_idx%)="_" THEN
- h$=fs_dat$(d_idx%)+CHR$(0)
- ~GEMDOS(&H3B,L:VARPTR(h$))
- @fs_normalisierung
- @fs_dateien
- @fs_neu
- idx%=0
- d_idx%=0
- hhx%=0
- ENDIF
- CASE 8 ! C_LOSE
- h$=".."+CHR$(0)
- ~GEMDOS(&H3B,L:VARPTR(h$))
- @fs_normalisierung
- @fs_dateien
- @fs_neu
- idx%=0
- d_idx%=0
- hhx%=0
- CASE 9 ! D_IREKT
- PRINT AT(fs_xb%+2+LEN(fs_commando$(9)),SHL(fs_yb%+10,fs_fk%));": ";
- FORM INPUT 12 AS fs_file$
- PUT fs_x%+8,fs_y%+c_idx%*16,c_back$
- PRINT AT(fs_xb%+2+LEN(fs_commando$(9)),SHL(fs_yb%+10,fs_fk%));SPACE$(14);
- PRINT AT(fs_xb%+20,SHL(fs_yb%+10,fs_fk%));LEFT$(fs_file$+" ",12);
- CASE 10 ! A_BBRUCH
- fs_file$=""
- CASE 11 ! R_ETURN
- ENDSELECT
- '
- UNTIL c_idx%=fs_abbruch% OR c_idx%=fs_default%
- HIDEM
- DEFMOUSE 0
- IF fs_dat1$(d_idx%)="_" THEN
- fs_file$=""
- ELSE
- fs_file$=UPPER$(TRIM$(fs_file$))
- ENDIF
- PUT fs_x%,fs_y%,fs_back$
- IF mk%>0 THEN
- PAUSE 10
- ENDIF
- RETURN ! fselect
- '
- PROCEDURE fs_normalisierung
- ' Laufwerk
- fs_drive%=GEMDOS(&H19)
- fs_drive$=CHR$(65+fs_drive%)
- fs_drvs%=BIOS(10)
- fs_tail$(1)=""
- FOR i%=0 TO 15
- IF BTST(fs_drvs%,i%) THEN
- IF i%=fs_drive% THEN
- fs_tail$(1)=fs_tail$(1)+inv$+" "+fs_drive$+" "+norm$
- ELSE
- fs_tail$(1)=fs_tail$(1)+" "+CHR$(65+i%)+" "
- ENDIF
- ENDIF
- NEXT i%
- ' Pfad
- ~GEMDOS(&H47,L:pfad_buf%,fs_drive%+1)
- fs_pfad$=CHAR{pfad_buf%}
- fs_tail$(2)=fs_pfad$
- '
- fs_top%=1
- IF mask$="" THEN
- mask$="*.*"
- ENDIF
- mask$=TRIM$(UPPER$(mask$))
- fs_tail$(3)=mask$
- '
- fs_vorschlag$=TRIM$(UPPER$(fs_vorschlag$))
- fs_file$=TRIM$(UPPER$(fs_file$))
- RETURN ! fs_normalisierung
- PROCEDURE fs_neu
- LOCAL i%
- DEFFILL 1,2,1
- PBOX fs_x%,fs_y%,fs_x%+fs_b%,fs_y%+fs_h%
- BOX fs_x%,fs_y%,fs_x%+fs_b%,fs_y%+fs_h%
- BOX fs_x%+2,fs_y%+2,fs_x%+fs_b%-2,fs_y%+fs_h%-2
- LINE fs_x%+2,fs_y%+8+(fs_coms%+1)*16,fs_x%+fs_b%-2,fs_y%+8+(fs_coms%+1)*16
- LINE fs_x%+2,fs_y%+10+(fs_coms%+1)*16,fs_x%+fs_b%-2,fs_y%+10+(fs_coms%+1)*16
- LINE fs_x%+2,fs_y%+(fs_coms%-1)*16,fs_x%+fs_b%-2,fs_y%+(fs_coms%-1)*16
- FOR i%=1 TO fs_coms%
- PRINT AT(fs_xb%+2,SHL(fs_yb%+1+i%,fs_fk%));fs_commando$(i%);fs_tail$(i%);AT(fs_xb%+2,SHL(fs_yb%+1+i%,fs_fk%));inv$;fs_com$(i%);norm$;
- NEXT i%
- PRINT AT(fs_xb%+20,SHL(fs_yb%+10,fs_fk%));fs_vorschlag$
- FOR i%=fs_top% TO fs_top%+fs_dat_anzs%
- IF i%<=fs_datein% THEN
- PRINT AT(fs_xb%+2,SHL(fs_yb%+3+fs_coms%+i%-fs_top%,fs_fk%));fs_dat1$(i%);LEFT$(fs_dat$(i%)+" ",13)+fs_dat2$(i%)
- ENDIF
- NEXT i%
- RETURN ! fs_neu
- PROCEDURE fs_dateien
- LOCAL fehler%,buf%,h$,i%
- FOR i%=1 TO fs_datein%
- fs_dat$(i%)=""
- fs_dat1$(i%)=""
- fs_dat2$(i%)=""
- NEXT i%
- fs_datein%=0
- buf%=FGETDTA()
- ' Ordner-Suche
- fehler%=FSFIRST(fs_pfad$+"\*.*",16)
- IF fehler%>=0 THEN
- IF BYTE{buf%+21}=16 THEN
- INC fs_datein%
- IF fs_datein%<fs_dats% THEN
- fs_dat$(fs_datein%)=CHAR{buf%+30}
- fs_dat1$(fs_datein%)="_"
- ENDIF
- ENDIF
- fehler%=FSNEXT()
- WHILE fehler%>=0
- IF BYTE{buf%+21}=16 THEN
- INC fs_datein%
- IF fs_datein%<fs_dats% THEN
- fs_dat$(fs_datein%)=CHAR{buf%+30}
- fs_dat1$(fs_datein%)="_"
- ENDIF
- ENDIF
- fehler%=FSNEXT()
- WEND
- ENDIF
- ' Dateien
- fehler%=FSFIRST(fs_pfad$+"\"+mask$,0)
- IF fehler%>=0 THEN
- INC fs_datein%
- IF fs_datein%<fs_dats% THEN
- fs_dat$(fs_datein%)=CHAR{buf%+30}
- fs_dat1$(fs_datein%)=" "
- ENDIF
- fehler%=FSNEXT()
- WHILE fehler%>=0
- INC fs_datein%
- IF fs_datein%<fs_dats% THEN
- fs_dat$(fs_datein%)=CHAR{buf%+30}
- fs_dat1$(fs_datein%)=" "
- ENDIF
- fehler%=FSNEXT()
- WEND
- ENDIF
- '
- FOR i%=1 TO fs_datein%
- IF fs_dat1$(i%)<>"_" THEN
- ~FSFIRST(fs_dat$(i%),-1)
- fs_dat2$(i%)=STR$({buf%+26},7)+" "+@dta_2_date$(INT{buf%+24})+" "+@dta_2_zeit$(INT{buf%+22})
- ENDIF
- NEXT i%
- RETURN ! fs_dateien
- FUNCTION dta_2_date$(in&)
- RETURN STR$(in& AND &X11111,2)+"."+STR$(SHR(in& AND &X111100000,5),2)+"."+STR$(1980+SHR(in& AND &X1111111000000000,9),4)
- ENDFUNC
- FUNCTION dta_2_zeit$(in&)
- RETURN STR$(SHR(in& AND &X1111100000000000,11),2)+"."+STR$(SHR(in& AND &X11111100000,5),2)
- ENDFUNC
-